今天我想要介紹一下關於C++的一些基本文法,還有一些我學到的寫程式時須注意的小撇步。做為一個初學者,我認為培養良好的習慣還有關係,將有助於我寫好程式。(因為網路上有很多寫的比我還要好很多的文章,所以我會寫得較像是筆記的形式,請見諒)
#include<iostream>
using namespace std;
main(){
cout << "Hello World! \n";
return 0;
}
相信很多初次學程式的人,寫的第一個程式碼就是"Hello World !"吧!第一次學的時候,我被告知要"先照抄,再理解",其實很多時候也是這樣,你先把你不理解的東西記起來,等到未來某一天你就會突然了解了。
這段程式碼的結果會長得像這樣:
接下來我會一項一項的把程式碼拆解。
首先第一個是
#include<iostream>
using namespace std;
這兩句被稱做為preprocessor,他們主要的功能,就是在compiler 做事之前,需要先做一些事情,才能讓compiler可以順利進行。
第一句 #include <iostream>
,<>中的檔案,中文被稱做標頭檔(header file),這些標頭檔可能是已經定義的函數或是變數,或是一些通用的東西(library)。例如是在C++中的standard library 中已經定義好的input & output。#include <iostream>
本身就是匯入這些定義好的東西,讓compiler可以正常運作。
因此,其實也可以自己定義一個檔案,例如:
#include "C:\ myheader.h";
(myheader.h就是已經寫好的一個標頭檔)。
可以把標頭檔想像成一個堆滿工具的房間,還有一個工具箱。Library(或是其他的標頭檔)就是那個房間,但是當你今天要出門的時候,你就必須把工具(定義的函數或變數)裝在工具箱(用
#include<>
把工具呼叫出來)裡面才能出門,而且每一天遇到的工作都不太一樣,所以你工具箱裡裝的工具可能每天都不盡相同。
接下來,後面的using namespace std;
這句話的重點在Namespace這個詞,中文被翻譯成命名空間,這個東西是作為儲存名稱用的,當今天程式要寫出像是cout
或是cin
等的程式碼時,如果沒有使用using namespace std;
就會讓程式無法成功運作。而其中std
就是一個叫做standard的命名空間。
可以把命名空間想像成一個大公司,底下有很多不同職稱的職員,擁有不同的員工編號(std或是其他的命名空間)。公司A有個職員叫做阿明,他的員工編號為
0908
,公司 B 有個職員叫做小美,他的員工編號也剛好是0908
。雖然兩個人的員工編號恰好相同,但是因為他們待在不同的公司,所以在付他們薪水的時候,就不會因為他們的員工編號相同而搞錯,因為他們存在於不同的命名空間裡面。(1)
int main(){
cout << "Hello World! \n";
return 0;
}
這一段文字,被稱作 主函數(main function),int main(){}
代表的是一種會回傳整數給電腦的函數,也有其他的函數例如 void main(){}
或是wmain(){}
,但是他們的功用我還不太了解。在每一個C語言組成的程式中,一定要含有至少一個main function,如果沒有寫入main function的話,編譯器就會發生錯誤。(2)詳細的原因我也不太了解,不過既然沒寫會跑不出來,那為什麼不寫呢XD? 好啦不是,可能未來有一天我會搞懂他的!
cout <<
這句話的意思是叫電腦印出後面的東西,箭頭指向他,可以把它想像成把檔案傳進去印表機的概念,cin >>
則是反過來,把輸入的東西傳輸到其他容器裡面。使用的方法像是: cout << 0;
跑出的程式就會印出一個斗大的0!cin>>
的話會在下一篇跟宣告變數做說明。
而"Hello World! \n"
就是我們想要讓電腦印出的東西了,但是身為初學者的人可能會覺得後面明明就還有兩個字,但為什麼沒有被印出來呢?\n
在程式語言中,被稱做跳脫序列(escape sequence),在程式中,因為沒有人按下Enter鍵讓他們換行,或是按下Tab鍵讓他們縮排,因此就需要使用這些跳脫序列讓程式可以做到上述的事。
常用的跳脫序列有:
接下來return 0;
這句話看似對程式碼沒有起到太大的效用,但是它的存在對於主函數而言卻很重要!簡而言之,return 0;
的作用是讓函數的進行終止,後面的0也可以改成其他的數值(即改變回傳的值),但是有些主函數(void main()
)是不需要回傳值的,但因為我也還沒接觸到所以先把他跳過。在程式讀到return 0;
的時候,就會像是返回了一個標誌,表示程式成功的執行完成了,可以退出了而如果不回傳一個值的話,系統就會自己判定他是異常返回,會做出相對應的處置。(3)
但是其實現在C99的編譯器已經會自動在編譯的時候加上
return 0;
了,所以沒有寫到return時也不會發生錯誤了 (但還是要記得寫啦!)
這一節的基本語法,雖然只是大海中的一粒細沙,還有很多東西是沒有提到的,我會盡量去介紹他們的。這一段程式是非常基本的一段,感覺對於目前只需要解出問題的我沒什麼幫助,像是return的作用,main()的作用花了一點時間去查,雖然說有些累,但是學到東西總是還蠻開心的呢!跟其他人比,我現在還是小弱雞一個,得花更多時間變得跟他們一樣強了!
最近的生活be like: